{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Grid Creation and Grid-Based Descriptor Calculation\n",
    "\n",
    "Another aspect of `molli` is it's ability to create grids, as a lot of the Denmark lab workflows operate with grid-based descriptors.\n",
    "\n",
    "Note: Pyvista is not natively installed within Molli, but this version can be added through conda using the line:\n",
    "`pip install pyvista==0.43.10` or `conda install pyvista=0.43.10`\n",
    "\n",
    "## Grid Creation "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Import the necessary packages\n",
    "import molli as ml\n",
    "import pyvista as pv\n",
    "\n",
    "#This is currently being run on a virtual server and needs a separate server for display via pyvista\n",
    "pv.start_xvfb()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(25, 3)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[-1. , -1. ,  0. ],\n",
       "       [-0.5, -1. ,  0. ],\n",
       "       [ 0. , -1. ,  0. ],\n",
       "       [ 0.5, -1. ,  0. ],\n",
       "       [ 1. , -1. ,  0. ],\n",
       "       [-1. , -0.5,  0. ],\n",
       "       [-0.5, -0.5,  0. ],\n",
       "       [ 0. , -0.5,  0. ],\n",
       "       [ 0.5, -0.5,  0. ],\n",
       "       [ 1. , -0.5,  0. ],\n",
       "       [-1. ,  0. ,  0. ],\n",
       "       [-0.5,  0. ,  0. ],\n",
       "       [ 0. ,  0. ,  0. ],\n",
       "       [ 0.5,  0. ,  0. ],\n",
       "       [ 1. ,  0. ,  0. ],\n",
       "       [-1. ,  0.5,  0. ],\n",
       "       [-0.5,  0.5,  0. ],\n",
       "       [ 0. ,  0.5,  0. ],\n",
       "       [ 0.5,  0.5,  0. ],\n",
       "       [ 1. ,  0.5,  0. ],\n",
       "       [-1. ,  1. ,  0. ],\n",
       "       [-0.5,  1. ,  0. ],\n",
       "       [ 0. ,  1. ,  0. ],\n",
       "       [ 0.5,  1. ,  0. ],\n",
       "       [ 1. ,  1. ,  0. ]], dtype=float32)"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Creates a rectangular grid as a canvas \n",
    "g = ml.descriptor.rectangular_grid([-1,-1,0], [1,1,0], spacing=0.5)\n",
    "print(g.shape)\n",
    "g"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAKAAoADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD5/ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK6/wADfDnWfiA18NJnsoRZhPMa6d1B37sAbVb+6a5CvXfhF8TfDvgHRNQt9TttRlu7q4D7raJGXYFAAJZwc5LdqAH/APDOPjD/AKCWh/8Af+b/AONUf8M4+MP+glof/f8Am/8AjVeg/wDDRng7/nw1v/vxF/8AHK9H8NeIIfFGhQavbWd5a29xkxLdoquy9mwGPB7evXpigD5h8S/BLxH4V8PXet6hqGkNa2oUusM0hc5YKAAYwM5I715rX0v+0N4otLXwvD4bjm3X15Kk0ka/wxKScn0ywGPofSvmigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK3fB/hS/8AGXiO30ewXDSHdLKRlYYx95z9P1JA70AdX8Ifhy/jbXftl9Gw0SycGc9POfqIwf1PoPqK+kvGni3TvAnheXUrhV+QeVa2y/L5r4+VR6Djn0AqzpmnaN4F8JpbRMlrpunwlpJXPXHLOx7knn+VfJvxI8eXXjzxK942+PT4Mx2cBP3E/vH/AGm6n8B2oA57W9avvEOs3Wq6lMZbu5cu7dh6ADsAMAD0FZ9FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABU1rF504BHyjk1DWnYxbId56vz+FexkWB+uY2MZL3Vq/Rf5szqy5YkH2Ge41KOztYWlmncLFGgyWYnAAH1r66+F/w/g8B+HFikCPqt0A95MOeeyKf7q5/E5NecfAPw9aXur6jrlzAHlsVSK2Zv4GfduI98AD/gRr3u5t47u1ltpt3lyoUfY5Q4IwcMpBH1BzWedYeGGx9SnDa9/vV7fK46bvFNnzV8cPiV/bt+/hnSJ86Zav8A6VKh4uJR291U/meewNeNV9g/8KU+Hv8A0Lw/8DJ//i6a/wAF/h3GjO/h9QqjJJvJ+B/33XllnyBRU128Ml5O9vH5cDSMY0yTtXPA554FQ0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAPhjMsqp6nn6VtAYGBVLT4sIZCOTwPpV2v0vhfA/V8J7aW89fl0/z+Zx15XlbsdD4f8c+I/C1pLa6LqItYZX8x18iN8tgDOWUnoKlm+NHxEhlZD4h6dP8AQrfp/wB+65mqWoRZQSAdODUcTZXTq4V4inFKcdW0tWut+9t/kFGbUrM7D/hdvxD/AOhh/wDJK3/+N1FcfGbx/dW0tvNr5aKVCjgWkAyCMHkJkVwlFfm52BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBr2ro8ChSMgcgdqmrDVmU5UkH1BqzDdzGVFL5BIHIr73LeKaXJCjWg09FdbdvK34nLOg73TNOobmREgcMRkggD1qlNdzCV1D4AJHAqszMxyxJPqTTzLiqkoTo0INvVXdrdvO/4BCg92JRRRXwJ1BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUV1vgvwna+IjPLfXMkUEZ2KsOAxbrnJBGMf5GOYfGfhWPw3eRG1nee0mB2lx8yMOoJAxz1H4+mTp7KXJz9DiWYUHifqt/f9P1OYooorM7QooooAKkg/4+I/8AeH86jqSD/j4j/wB4fzrfC/x4eq/MUtgn/wCPiT/eP86jqSf/AI+JP94/zqOjFfx5+r/MI7IKKKKwGFFFFABRXX+C/CFt4hWae/uZIYFOxFiwGZuCTkgjH+eMc1vGfhiHw3fwra3LTW06kp5n31IxkHAweowf8MnT2UuTn6HFHMKEsT9VT9/0/U5miiisztCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDa0PxDNoquiISrtuyDgg4pmua/ca3JH5uVjjzhd2ck9/8+9ZFFXzy5eW+hz/VaPtfbcvvdwoooqDoCiiigAqSD/j4j/3h/Oo6kg/4+I/94fzrfC/x4eq/MUtgn/4+JP8AeP8AOo6kn/4+JP8AeP8AOo6MV/Hn6v8AMI7IKKKKwGFFFFAG3ofiOfRo2iRSyM27hsEcVDrmuT63NG8owsYIUE5PP/6hWVRV88uXlvoc6wtFVfbKPvdwoooqDoCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACirWmxRT6paxT/AOpaVQ4zjIzyK9ivNP8ADd3ob2r2FrEhUlXijVGRjj5gQODwPrjnIranRdRNpnmY/Mo4OcIuDd+3Q8TooorE9MKKKKACiiigAooooAKKKKACiiigAqSD/j4j/wB4fzqOu08JW+mt4d1aa5toZbrZII3kUMUwmQVz0OT1FdOCjzYiC81+ZzYvEKhS52r9PvOPn/4+JP8AeP8AOo66rxhb2EdloktpBHFNJajzygxvIC8keuSee9crRjI8uImvNlYasq1JTSt/wHYKKKK5jcKKKKACiiigAooooAKKKKACiiprSNJryCKQkI8iqxHUAnmgTdlchor25bHw02jC1bTbPyghAOwbhkAE7uueBznPArxSZFjnkRHEiKxCuB94Z61rVpOnbU87L8yWMckoOPL3GUUUVkekFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAqsVYMpIYHIIPINXZdXv54WikuCUYYICgZ/IVRopptbEyhGTvJXCiiikUFFFFABRRRQAUUUUAFFFFABRRRQAVZsrma3l2xSFVlwrjsRVapIP8Aj4j/AN4fzrfC/wAeHqvzJmk4tMfdzSTXLGRy235Fz2A6CoKkn/4+JP8AeP8AOo6MV/Hn6v8AMIq0VYKKKKwKCiiigAooooAKKKKACiiigAooooAvf2zqBi8v7U23GOgz+eM/jVGiim23uTGEY/CrBRRRSKCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAora8KW1pc+IIFvkDwLlyjdGI6A+1eh+K9M8OyeGrloLC1t544zJHJBGqNuA4BwOQemP61tCi5RcrnmYrM44evGg4t83VdLnkVFFFYnphRRRQAUUUUAFFFFABRRRQAUUUUAFFFXtHggudYtYbkEwNIN4BxkemaaV3YmclCLk+hRor2rUNK8M3OjTRHTrOEshxLDEqOp7EECvFa0q0nTtqcGX5jHGqTUXG3cKKKKyPRCiiigAqSD/j4j/3h/Oo6kg/4+I/94fzrfC/x4eq/MUtgn/4+JP94/zqOpJ/+PiT/eP86joxX8efq/zCOyCiiisBhRRRQAUVJbostzFG5IVnCkjrgmvaYdL8MNpXktpdkV8vZv8ALG/GMZ3dc++c1rSpOpezPNzDMo4LlvFyv2PEqKnvYo4L64hiYtHHKyox6kA4FQVkejF3V0FFFFAwooooAKKKKACiiigAooooAKKKKACivZtB03w5HosCSabZTOIxueaJXck9SSRmvK9ftbay168t7PP2dH+QE5wCAcZ9s4rapRcIp3PM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Mn+Vadr4x044IvY8f7R2/wA6zdNnDPB1FrZnE+MPDUnh7VWEaN9hlOYHJzj1U+4/l+Nc7Xs13daT4t02TTTNDJI3KOrBjE3OG4P6d+lcr4r+H0OjaY2oafeyTRxgeZDKuWwTywI/DjHTJz2rrpU5yhzW2O+jmlOMo0K7tN6bb9vvODooopHrhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHW6V41l0/T47Zlf92oQbeRgdO9c5qN9JqWoTXkoAeU5IHbAwP0FVaKuVSUlZnNSwlGlN1IRs2FFFFQdIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVveH/EkmiJJGFYozbht656f0rBoqoycXdGVajCtBwqK6NnxDr8uu3ETOCEiBC5684z/IVjUUUpScndjpUoUoKEFZIKKKKRoFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAX9H1N9J1BblBnja2OuPb8q2db8Y3GqaebRN6o/Dk8cenBrl6KtVJJcqOaphKNSoqso3kgoooqDpCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK9G+H2k6NNYvdahaw3MzOVAmXcFXjseM8dcVj+P9K03TtVhk0xFijnVi8S5wrA9RzwDnoOBitXRahznm08zpzxbwvK7rr0ORooorI9IKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiu3+HumaXdzz3GpQRzlGCxpIMqODkkdD17jjFTfEXSNJtBb3mmwx27u5SSOMYVuOCB0GMdhzmtfYvk5zzXmdNYz6pyu/fpfc4Kiiisj0gooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAL1jq13pylbdwFJyQR39f0qC8vJ76fzrh9z4wOOg9Kgop8ztYhUoKXOlqFFFFIsKKKKACiiigAooooAKKKKACiiigAooooAKKKKALVjqNzp7s1u4XdjcCM5x0/nS32o3OourXL7tv3Rjp/nFVKKfM7WI9lDm57a9wooopFhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUV0vhXwfN4mMrm7S1gjO3eV3lm9AMjt3+nvioxcnZGNfEU8PTdSq7JHNUVveKfC8/hi+jhedLiCVcxTKNucYyCuTgjP6j3AwaUouLsx0a1OvTVSm7xYUUUUjUKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACui8OeJjocEkW1yGfeNuD2x7elc7RVRk4u6Mq9CFeHJUV0bniTxC2vzQMVYLEGxu98f4Vh0UUpScndjo0YUYKnBWSCiiikaBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf/2Q==",
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAKACAIAAACDr150AABHG0lEQVR4Ae3dCZwcZZ3w8X/PfeYghNwkEAEFEhDEBMRFYAO4EBA8WBANIC6u8vF9X1xdEDkWFYO7sLryAQEDhEPCjRwBwq5yC4iBcGTDEckBuTOZo+foc97/0zXT09Nd1cd09XRX968+k0l1HU899X1q6t/PU09ViTAggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIJCNwNNPP93v3rBo0aJsNsoyCCCQUaAq4xIsgAACnhaYO3eui/l/4403XEyNpBBAAAEEEChPgUmTJrlX++0PBoN1dXXlKcVeITDqAtSAR52cDSIwigLuVn9Xr16tMXgUs8+mEChnAQJwOZcu+4aAuwF41apVkCKAgFsCBGC3JEkHgVIUcDcAcwG4FMuYPHlWgADs2aIj4whkIeBuAKYGnAU5iyCAAAIIVLxAbW1tIBBwqxOW3+8fP358xaMCgIBrAjWupURCCCBQYgLhcHiPPfbIPlMnnHDCsmXLnJY///zzd+3a5TSX6QgggAACCCAwEoHp06dv377dqbp8ww03jCRR1kEAAQQQQACBNALaWP3iiy86Rd/XXnutvr4+zerMQgABBBBAAIGRCFx77bVO0Vebnffaa6+RJMo6CCCAAAIIIJBG4NRTT3WKvtFo9OSTT06zLrMQQAABBBBAYCQCe++9d3t7u1MAvvrqq0eSKOsggAACCCCAQBoBvbK7cuVKp+j73HPP1dRwo0QaP2YhgAAC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7rpHzdiic00nFD3ytXKgv3ftksf/oJP3+T8LJp8whzBsiFwdvvjFLy5fvtw2yRtuuOG73/2u7Szbidr4/Oqrr376059Onav1bI3N2vaTOospotUt64qTdbbXI/9ub0dfyhSBUhfQSnAwGNRrvbbDs88+m/0O7LXXXlu3brVNRyfecccdPv0mUUqDht7+675r/eh49lk75MZF2hZt/eh49iuypJNAbW1tW1ub7cGTa7zUFmbbdHTiGWec4ZQBpiOAAAJFELjxxhudTlg6/cgjs3rw2W677bZmzRqndP74xz/atgcWYW9jmxxx6I1nWKvCn3/iQisG64h+jM9iZGQCS5YscTp+5syZk2WaBx10kNMXyjvvvDPLRFgMAQQQGCWBmTNnOp2z9IT4xBOZO/7W19frpTWns+dbb71l279mlHZv+GY09MajrzU+fH5unwjDuXmlXfq4445zOoQuuuiitKsOzNRq9Ouvv26byLp160rnIMxmX1gGAQQqRSB9JfjQQw9NA6ENy8uWLbM96+nEjz/+eMYM7VpcEkM89Gqzs467lScNw/EWaa0Nu5VspaWj12537NhheyC98MIL2WhcccUVtqtr3/vPf/7z2aTAMggggMBoC6SvBD/4YLqbQK6++mrbs55O7Ozs1CbB0d4Zu+0VKPQmbooLw4kaIxvXHvK2x1I4HNZrHOnT1F5XTg05P/85T9FKj8dcBBAoqkCaSrDes3HAAQfY5u6f//mfbc+YOlEfd6CNirZrjebEUQi98d2hRTpOMbKRY4891ulwOvPMM9OkqY3Pq1atsl1X70fSuWnWZRYCCCBQZIH0lWDbDiwnnXSSVk1sz3o68ZxzzinuLi0+ZX48+q678hsutjmn3y/CcHqfNHOrq6udOtLfddddaVa88sorbY9Dfezavvvum2ZFZiGAAAIlIeDUAKinNg20s2fPTsylXhj2+/22Zz2dePnllycuPPrj8dDr7uXe7HeEFunsrRKXvP76620PKr1JScNz4pLxcW181uYW27XS3OMeX50RBBBAoPgCs2bNcrqKpme3xCdY6ZJbtmyxPeXpRH3CZRF3puihN3HfCcOJGtmMf+ELX3A6rmzviNPb2958803bVZyeL51NNlgGAQQQGG2BNJXgQCAwffp0zdD48eNXr15te8rTifpcX+3OOtr5jm2vpEJvXIAW6ThFNiP6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+XoUe5aY/n6E0ilGKTht85TTzLV5LZfYIyrlkQedFmQ6AggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACcQFffIwRBMpQYMVDMnaM1NZIMCTz/74Md7D8dum/H5YxrVJTI4GgHL6g/PaPPUIgLkAAjlMwUl4CP79cvvA5GT9OWpqkplYiYekLyFur5bSzyms/y2hvfn21HHaIjBsrLc1SUy2RiPQG5JXX5Bv/VEY7ya4gMCRQNTTKGALlJPCp/Uzc7e+X/ti3zKiYjzNnltMultu+zJo5UGRmx3xiiqxGtBwZEChTAQJwmRZshe/W6V+RUFi6e8TfbX66us24/oRCsvSmCrcp0d0/83RzmcAqpoEi01LrlWBYllxfonkmWwjkJ1CT3+qsjUBJCmj09fdIY6PJnK9aqqslHDY/XX5zimcoQQH9bqRF1tAo/Zq5qliRhSQUka4u6ektwfySJQTyFyAA529ICqUnoKfyXZ2mPVPP4KGouaCoIdkKwG3tpZddciTSFSuyai2ysCm1eJF1dslOiowjpDwFCMDlWa6VvlfaeefjLRKOSHOztGqPnhrT+KwBuKNT1q6vdJzS3P/eXlNkGnqbm6SlJRaAtQasRdYhH6wrzSyTKwTyFKAXdJ6ArF6qAuecZ07i2p+2Ve9pqTbXFzUG79gpS24u1RxXfL60yPSGMfOdqcU0QWt56c+27XLrkoqnAaA8BagBl2e5slfmWq9WpHZ1mLZoHaIR8VVJTzcypSvQ1ye+JtFrBFpqeik42i8+n/i7SjfD5AyB/ASoAefnx9olLvCFY82dSNbw7B9LPLNkzwhYRaaFpicnioxjAgEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQyC/gyL8ISCCBQagIvPCVjWqW5UaJRCYbkgPmllkHygwACGQUIwBmJWACBEhP4n0dl4u7S0iSNjdLfL5GIdPll/8+WWC7JDgIIZBCoyjCf2QggUFICN/1GxCehkATDEgjGRkJmytOPlFQ2yQwCCGQUqMm4BAsggEAJCWjQ1fquzyfRftP4LP0mBodiwbiEcklWEEAgswABOLMRSyBQQgL+XtGfqhrxVUkoYjKmYTgYkPbOEsokWUEAgSwECMBZILEIAqUjsG2nNDSaoNsXlIZ6k69g0LRF63QGBBDwlAAB2FPFRWYR2NFmrviOGystLbEAHGuC7umTjz7CBgEEvCVAAPZWeZHbihcIBKTTLx1dUlMjjQ3mNiS9ANzXJx0dFU8DAAIeE+A2JI8VGNlFQP7x61LfYO4+qqoa+N3bK/cvQwYBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEPCPx/BhDMVn2H350AAAAASUVORK5CYII=",
      "text/plain": [
       "<PIL.Image.Image image mode=RGB size=640x640>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Adds theme to Pyvista plot and allows for jupyter notebook integration\n",
    "pv.set_plot_theme(\"dark\") \n",
    "plt = pv.Plotter(notebook=True)\n",
    "\n",
    "# Creates a point cloud from the grid generated by molli and adds it to the plot\n",
    "points = pv.PointSet(g)\n",
    "\n",
    "# Adds more features to the plot and displays it\n",
    "plt.add_mesh(points, color=\"cyan\", render_points_as_spheres=True, point_size=10)\n",
    "plt.add_axes_at_origin()\n",
    "plt.show(jupyter_backend=\"panel\", window_size=(640,640))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Grid-Based Conformer-Average (GBCA) Descriptor Calculation\n",
    "\n",
    "The command-line interface within `molli` also allows rectangular grid calculation then subsequent descriptor calculation from an existing conformer library file. This can be parallelized, and will be returned as an hdf5 file.\n",
    "\n",
    "### Grid Calculation\n",
    "An example command would look like\n",
    "\n",
    "`molli grid example.clib -o example_grid.hdf5 -s 1.0 -n 16 --prune`\n",
    "\n",
    "Note: The `--prune` option is necessary for the accelerated GBCA descriptor calculation, but unecessary for standard grid calculation\n",
    "\n",
    "Other parameters available in the `grid` script are shown below"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "usage: molli grid [-h] [-o <fpath>] [-n NPROCS] [-p 0.0] [-s 1.0]\n",
      "                  [-b BATCHSIZE] [--prune [<max_dist>:<eps>]]\n",
      "                  [--nearest [NEAREST]] [--overwrite] [--dtype DTYPE]\n",
      "                  library\n",
      "\n",
      "Read a molli library and calculate a grid\n",
      "\n",
      "positional arguments:\n",
      "  library               Conformer library file to perform the calculations on\n",
      "\n",
      "options:\n",
      "  -h, --help            show this help message and exit\n",
      "  -o <fpath>, --output <fpath>\n",
      "                        Destination for calculation results\n",
      "  -n NPROCS, --nprocs NPROCS\n",
      "                        Specifies the number of jobs for constructing a grid\n",
      "  -p 0.0, --padding 0.0\n",
      "                        The bounding box will be padded by this many angstroms\n",
      "                        prior to grid construction\n",
      "  -s 1.0, --spacing 1.0\n",
      "                        Intervals at which the grid points will be placed\n",
      "  -b BATCHSIZE, --batchsize BATCHSIZE\n",
      "                        Number of molecules to be treated simulateneously\n",
      "  --prune [<max_dist>:<eps>]\n",
      "                        Obtain the pruning indices for each conformer ensemble\n",
      "  --nearest [NEAREST]   Obtain nearest atom indices for conformer ensembles.\n",
      "                        This is necessary for indicator field descriptors.\n",
      "                        Accepts up to 1 parameter which corresponds to the\n",
      "                        cutoff distance.\n",
      "  --overwrite           Overwrite the existing grid file\n",
      "  --dtype DTYPE         Specify the data format to be used for grid parameter\n",
      "                        storage.\n"
     ]
    }
   ],
   "source": [
    "!molli grid -h"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### ASO/AEIF Calculation\n",
    "\n",
    "The Average Steric Occupancy (ASO) descriptor was originally developed in the Denmark lab to capture the dynamic nature of sterics in a molecule. This measures whether an indiviudal conformer is occupying a grid point or not and assigns it a value of 0 if unoccupied and a value of 1 if occupied. This then averages the amount a grid-point was occupied over the number of conformers calculated, giving a value between 0 and 1. More information can be found at [**DOI**:10.1126/science.aau5631](https://www.science.org/doi/10.1126/science.aau5631)\n",
    "\n",
    "We have significantly accelerated this descriptor calculation such that it can operate on massive `ConformerLibraries`. This has also been made availble to parallelize for further acceleration. An example of an ASO calculation run through the command line is shown below\n",
    "\n",
    "`molli gbca aso example.clib -o example_aso.hdf5 -g example_grid.hdf5 -n 16`\n",
    "\n",
    "The Average Electronic Indicator Field (AEIF) descriptor has a very similar implementation as ASO, with the only difference being the grid-point is not assigned a 0 or 1 for occupancy, rather it is assigned the electronic charge of an atom.\n",
    "\n",
    "Note: This requires the atomic charges for the `ConformerEnsemble` in each `ConformerLibrary` to be previously calculated and assigned.\n",
    "\n",
    "Other parameters available in the `gbca` script are shown below"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "usage: molli gbca [-h] [-w] [-n 128] [-b 128] [-g <grid.hdf5>]\n",
      "                  [-o <lib_aso.hdf5>] [--dtype DTYPE] [--overwrite]\n",
      "                  {aso,aeif} CLIB_FILE\n",
      "\n",
      "This module can be used for standalone computation of descriptors\n",
      "\n",
      "positional arguments:\n",
      "  {aso,aeif}            This selects the specific descriptor to compute.\n",
      "  CLIB_FILE             Conformer library to perform the calculation on\n",
      "\n",
      "options:\n",
      "  -h, --help            show this help message and exit\n",
      "  -w, --weighted        Apply the weights specified in the conformer files\n",
      "  -n 128, --nprocs 128  Selects number of processors for python\n",
      "                        multiprocessing application. If the program is\n",
      "                        launched via MPI backend, this parameter is ignored.\n",
      "  -b 128, --batchsize 128\n",
      "                        Number of conformer ensembles to be processed in one\n",
      "                        batch.\n",
      "  -g <grid.hdf5>, --grid <grid.hdf5>\n",
      "                        File that contains the information about the\n",
      "                        gridpoints.\n",
      "  -o <lib_aso.hdf5>, --output <lib_aso.hdf5>\n",
      "                        File that contains the information about the\n",
      "                        gridpoints.\n",
      "  --dtype DTYPE         Specify the data format to be used for grid parameter\n",
      "                        storage.\n",
      "  --overwrite           Overwrite the existing descriptor file\n"
     ]
    }
   ],
   "source": [
    "!molli gbca -h"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "dev-blake",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.6"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
